package com.hsteach.dao.mapper.calendar;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.hsteach.dao.domain.calendar.CalendarDay;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

/**
 * 周行事历自定义单天Mapper接口
 *
 * @author fanxquer
 * @date 2023-11-28
 */
public interface CalendarDayMapper
{
    /**
     * 查询周行事历自定义单天
     *
     * @param id 周行事历自定义单天主键
     * @return 周行事历自定义单天
     */
    public CalendarDay selectCalendarDayById(Long id);

    /**
     * 查询周行事历自定义单天列表
     *
     * @param calendarDay 周行事历自定义单天
     * @return 周行事历自定义单天集合
     */
    public List<CalendarDay> selectCalendarDayList(CalendarDay calendarDay);

    /**
     * 新增周行事历自定义单天
     *
     * @param calendarDay 周行事历自定义单天
     * @return 结果
     */
    public int insertCalendarDay(CalendarDay calendarDay);

    /**
     * 修改周行事历自定义单天
     *
     * @param calendarDay 周行事历自定义单天
     * @return 结果
     */
    public int updateCalendarDay(CalendarDay calendarDay);

    /**
     * 删除周行事历自定义单天
     *
     * @param id 周行事历自定义单天主键
     * @return 结果
     */
    public int deleteCalendarDayById(Long id);

    /**
     * 批量删除周行事历自定义单天
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCalendarDayByIds(Long[] ids);

    @MapKey("day")
    Map<Date, Map<String,Boolean>> selectWorkFlagByQuery(@Param("query") CalendarDay query, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

    int delByDate(@Param("calendarId")Long calendarId, @Param("holidays") List<Date> holidays);
}
